#pragma once

#include <QtCore/QtGlobal>
#include "GUIWidget/GUIWidgetBase.h"


namespace EventOper 
{
	class ParaWidgetInterfaceOperator;
}

namespace Ui 
{
	class GUIPost3DVisualizationWidget;
}

namespace Interface 
{
	class FITKCDPost3DFixedWall;
	class FITKCDPost3DRigidBody;
	class FITKCDPost3DFLuid;
}


namespace GUI
{
	class MainWindow;
	class GUIWIDGETAPI GUIPost3DVisualizationWidget : public GUIWidgetBase
	{
		Q_OBJECT
	public:
		GUIPost3DVisualizationWidget(EventOper::ParaWidgetInterfaceOperator* oper, QWidget* parent = nullptr);
		~GUIPost3DVisualizationWidget();

		void init();

    private slots:
		void on_comboBox_FW_Coloring_activated(int index);
		void on_pushButton_FW_Single_Color_clicked();
		void on_checkBox_FW_Visible_stateChanged(int state);
		void on_doubleSpinBox_FW_Opicity_valueChanged(double value);
		void on_comboBox_FW_Display_Mode_activated(int index);

		void on_comboBox_RB_Coloring_activated(int index);
		void on_pushButton_RB_Single_Color_clicked();
		void on_checkBox_RB_Visible_stateChanged(int state);
		void on_doubleSpinBox_RB_Opicity_valueChanged(double value);
		void on_comboBox_RB_Display_Mode_activated(int index);

		void on_comboBox_FL_Coloring_activated(int index);
		void on_pushButton_FL_Single_Color_clicked();
		void on_checkBox_FL_Visible_stateChanged(int state);
		void on_doubleSpinBox_FL_Opicity_valueChanged(double value);
		void on_comboBox_FL_Display_Mode_activated(int index);

    private:
		void setDataToWidget();

    private:
        EventOper::ParaWidgetInterfaceOperator* _oper = nullptr;
		Ui::GUIPost3DVisualizationWidget* _ui = nullptr;

		Interface::FITKCDPost3DFixedWall* _pFixedWall;
		Interface::FITKCDPost3DRigidBody* _pRigidBody;
		Interface::FITKCDPost3DFLuid* _pFLuid;
	};
}